// * 配置相关
// * 基础数据初始化
export function appStorageInit(callBack = () => {}) {
  getAppSetting()
  getOrderSetting()
}

/**
 * * 获取 基础默认配置
 * * AppSetting
**/

export function getAppSetting(callBack = () => {}) {
  // * 默认基础配置
  let AppSettingBase = {
    userName: '金算盘用户',
    appName: '金算盘',
    orderPr: 'YG', // 订单前缀
    commissionRate: 0, // 佣金比例
    periodsNum: 1, // 当前期数
    receiptTitle: '', // 小票抬头
    language: 1, // 语言 1: 中文，2：西班牙语
  }
  uni.getStorage({
    key: 'AppSetting',
    success: function (res) {
      callBack(res.data)
    },
    fail: function () {
      callBack(AppSettingBase)
      uni.setStorage({
        key: 'AppSetting',
        data: AppSettingBase,
        success: function () {}
      })
    }
  })
}

/**
 * * 订单设置相关
 * * OrderSetting: Obiect
 * * periodsNum: 1 // 当前期数
 * * commissionRate: 0.15 // 佣金比例
 * * quantityPrice_1: 1 // 大标单价
 * * quantityPrice_2: 0.25 // 小标单价
 * * quantityBones_1: 20 // 大标奖金倍数（废弃）
 * * quantityBones_2: 10 // 小标奖金倍数（废弃）
 * * quantityMaxNum_1：'' // 大标节数限制
 * * quantityMaxNum_2：'' // 小标节数限制
 * * winningNumber: [0000, 1111, 2222] // 中奖数组
 * * drawingDate: '' // 开奖日期
 * * winningNumberRule: [] // 中奖号码 奖金规则
*/
// * 获取 订单设置
export function getOrderSetting(callBack = () => {}) {
  let OrderSetting = {
    periodsNum: 1,
    commissionRate: 0.15,
    quantityPrice_1: 1,
    quantityPrice_2: 0.25,
    quantityBones_1: 20,
    quantityBones_2: 10,
    quantityMaxNum_1: '',
    quantityMaxNum_2: '',
    winningNumber: [],
    drawingDate: '',
    // 中奖号码 奖金规则
    winningNumberRule: [
      [
        0.25 * 56, // 对后两位
        1 * 2000, // 大标4位全对
        1 * 50, // 大标中前3 或者 后3
        1 * 3, // 大标，小标 前后两位
        1 * 1 // 中最后一位
      ],
      [
        0.25 * 12, // 对后两位
        1 * 600, // 大标4位全对
        1 * 20, // 大标中前3 或者 后3
        1 * 2, // 大标，小标 前后两位
        0 // 中最后一位
      ],
      [
        0.25 * 8, // 对后两位
        1 * 300, // 大标4位全对
        1 * 10, // 大标中前3 或者 后3
        1 * 1, // 大标，小标 前后两位
        0 // 中最后一位
      ]
    ]
  }
  uni.getStorage({
    key: 'OrderSetting',
    success: function (res) {
      callBack(res.data)
    },
    fail: function () {
      callBack(OrderSetting)
      uni.setStorage({
        key: 'OrderSetting',
        data: OrderSetting,
        success: function () {}
      })
    }
  })
}

/**
 * * 当前订单列表相关（号码维度）
 * * OrderList
 * * id: '订单id'
 * * orderNum: '订单号码'
 * * quantity: '订单节数'
 * * orderType: '订单类型' // 1: 小号， 2：大号
 * * updataTime: '下单时间'
 * * del: 1 // 1: 已作废，2：未作废
*/
/**
 * * 当前订单列表相关（订单维度）
 * * OrderLists
 * * id: '订单id'
 * * orderNum: '订单号码'
 * * quantity: '订单节数'
 * * orderType: '订单类型' // 1: 小号， 2：大号
 * * updataTime: '下单时间'
 * * del: 1 // 1: 已作废，2：未作废
*/
// * 获取当期订单列表（号码维度）
export function getOrderList(callBack = () => {}, key = 'OrderList') {
  uni.getStorage({
    key,
    success: function (res) {
      callBack(res.data)
    },
    fail: function () {
      callBack([])
    }
  })
}

// * 更新 当期新增订单数据（号码维度）
export function setOrderList(
  data = [], 
  callBack = () => {}, 
  init = false, 
  key = 'OrderList'
) {
  uni.getStorage({
    key,
    success: function (res) {
      uni.setStorage({
        key,
        data: init ? data : [
          ...data,
          ...res.data
        ],
        success: function (res) {
          callBack(res.data)
        }
      })
    },
    fail: function () {
      uni.setStorage({
        key,
        data,
        success: function (res) {
          callBack(res.data)
        }
      })
    }
  })
}

/**
 * * 历史订单相关(历史订单默认只存3期)
 * * OrderStatistics: array
 * * orderList: '对应订单列表（号码维度）'
 * * orderLists: '对应订单列表（订单维度）'
 * * periodsNum: '期数'
 * * commissionRate: '佣金比例'
 * * dateDrawing: '开奖时间'
 * * orderAmount: '当期订单总金额' (暂不使用)
*/
// * 开奖更新历史数据
export function setOrderStatistics(data = [], callBack = () => {}, init = false) {
  uni.getStorage({
    key: 'OrderStatistics',
    success: function (res) {
      let newData = [...res.data, ...data]
      if (newData.length >= 4) newData.shift()
      uni.setStorage({
        key: 'OrderStatistics',
        data: newData,
        success: function (res) {
          callBack(res.data)
        }
      })
    },
    fail: function () {
      if (data.length >= 4) newData.shift()
      uni.setStorage({
        key: 'OrderStatistics',
        data: data,
        success: function (res) {
          callBack(res.data)
        }
      })
    }
  })
}


// * 统计相关


/**
 * * 公用设置
*/
// * 新增/修改 当期新增订单数据
export function setStorage(key, data = [], callBack = () => {}, init = false) {
  uni.getStorage({
    key: key,
    success: function (res) {
      uni.setStorage({
        key: key,
        data: init ? data : [
          ...data,
          ...res.data
        ],
        success: function (res) {
          callBack(res.data)
        }
      })
    },
    fail: function () {
      uni.setStorage({
        key: key,
        data,
        success: function (res) {
          callBack(res.data)
        }
      })
    }
  })
}

// * 数据初始化
export function storageInit() {
  // * 初始化密码
  uni.setStorage({
    key: 'passWord', 
    data: '#a9Qd83y4@7H'
  })
  // * AppSetting 默认基础配置
  uni.setStorage({
    key: 'AppSetting', 
    data: {
      userName: '金算盘用户',
      appName: '金算盘',
      orderPr: 'YG', // 订单前缀
      commissionRate: 0, // 佣金比例
      periodsNum: 1, // 当前期数
      receiptTitle: '', // 小票抬头
      language: 1, // 语言 1: 中文，2：西班牙语
    }
  })
  // * OrderSetting 订单设置相关
  uni.setStorage({
    key: 'OrderSetting',
    data: {
      periodsNum: 1,
      commissionRate: 0.15,
      quantityPrice_1: 1,
      quantityPrice_2: 0.25,
      quantityBones_1: 20,
      quantityBones_2: 10,
      quantityMaxNum_1: '',
      quantityMaxNum_2: '',
      winningNumber: [],
      drawingDate: '',
      // 中奖号码 奖金规则
      winningNumberRule: [
        [
          0.25 * 56, // 对后两位
          1 * 2000, // 大标4位全对
          1 * 50, // 大标中前3 或者 后3
          1 * 3, // 大标，小标 前后两位
          1 * 1 // 中最后一位
        ],
        [
          0.25 * 12, // 对后两位
          1 * 600, // 大标4位全对
          1 * 20, // 大标中前3 或者 后3
          1 * 2, // 大标，小标 前后两位
          0 // 中最后一位
        ],
        [
          0.25 * 8, // 对后两位
          1 * 300, // 大标4位全对
          1 * 10, // 大标中前3 或者 后3
          1 * 1, // 大标，小标 前后两位
          0 // 中最后一位
        ]
      ]
    }
  })
  // 订单相关
  uni.setStorage({ key: 'OrderList', data: [] })
  uni.setStorage({ key: 'OrderLists', data: [] })
  // 历史订单相关
  uni.setStorage({ key: 'OrderStatistics', data: [] })
}





